#pragma once
#include<locale.h>
#include<stdlib.h>
#include<stdbool.h>
#include<Windows.h>
#include<winuser.h>
#include<stdio.h>
#include<time.h>
 
#define WALL_l L'墙'
//#define BODY L'头'
#define BODY L'●'
//#define FOOD L'头'
#define FOOD L'▲'
#define pos_x 24
#define pos_y 5
 
#define KEY_PRESS(vk)  ((GetAsyncKeyState(vk)&1)?1:0)
//蛇的方向
enum Direction
{
	UP = 1,//向上
	DOWN,//向下
	LEFT,//向左
	RIGHT//向右
};
 
//游戏状态
enum Game_State
{
	OK,//正常
	WALL,//撞墙
	TOUCH_YOURSELF,//触碰到自己
	END//结束
};
 
//创建蛇身节点类型
typedef struct snakeNode {
	//坐标
	int x;
	int y;
	//指向下一个节点的指针
	struct snakeNode* next;
}snakeNode,*psnakeNode_Hand;
 
 
//贪吃蛇 
typedef struct Snake
{
	psnakeNode_Hand Head;//指向蛇头的指针
	psnakeNode_Hand food;//指向食物的指针
	enum Direction dir;//蛇的方向
	enum Game_State state;//游戏状态
	int food_scores;//一个食物的分数
	int sum;//总分
	int sleep_time;//蛇的速度:休息时间(时间越短，速度越快; 时间越长，速度越慢)
}Snake, * psnake;
 
 
//初始化
void Game_start(psnake ps);
//定位(x,y)
void set_pos(int x, int y);
 
//隐藏光标+控制台大小
static void set_window();
 
//欢迎开始界面
static void wecometogame();
 
//地图打印
void Drawmap();
 
//创建蛇
void Create_snake(psnake ps);
 
//创建食物
void Create_food(psnake ps);
 
//==============================================
 
 
//游戏运行
void Game_run(psnake ps);
 
//蛇的移动
void SnakeMove(psnake ps);
 
//判断是否遇到食物
int Nextfood(psnakeNode_Hand pn, psnake ps);
 
//吃掉食物
void Eatfood(psnakeNode_Hand pn, psnake ps);
 
//没有食物
void Nofood(psnakeNode_Hand pn,psnake ps);
 
 
//判断撞墙
void KillByWall(psnake ps);
//判断撞到自己
void KillBySelf(psnake ps);
 
//==============================================
 
//结束游戏
void Game_end(psnake ps);

